import { Router } from 'express';
import { MongoClient } from 'mongodb';

const router = Router();

// MongoDB 配置
const mongoUrl = 'mongodb://localhost:27017';
const dbName = 'risk_backend';
const collectionName = 'company_scores';

// 定义路由
router.get('/', async (req, res) => {
  const client = new MongoClient(mongoUrl);
  try {
    await client.connect();
    const db = client.db(dbName);
    const collection = db.collection(collectionName);

    // 获取所有公司最新时间段的数据
    const latestData = await collection
      .aggregate([
        {
          $sort: { LComNm: 1, InfoPubDate: -1 }, // 按公司名称升序，时间降序排序
        },
        {
          $group: {
            _id: '$LComNm', // 按公司名称分组
            latestRecord: { $first: '$$ROOT' }, // 获取每组的最新记录
          },
        },
        {
          $replaceRoot: { newRoot: '$latestRecord' }, // 替换根为最新记录
        },
      ])
      .toArray();

    // 计算总企业数
    const totalEnterprises = latestData.length;

    // 计算上升企业数和风险企业数
    let risingEnterprises = 0;
    let riskEnterprises = 0;

    latestData.forEach((company) => {
      if (company.RiskLevel === '潜在增长') {
        risingEnterprises++;
      } else if (
        company.RiskLevel === '低风险' ||
        company.RiskLevel === '中风险' ||
        company.RiskLevel === '高风险'
      ) {
        riskEnterprises++;
      }
    });

    // 返回结果
    res.json({
      totalEnterprises, // 入驻企业总数
      risingEnterprises, // 上升企业数量
      riskEnterprises, // 风险企业数量
      regionDistribution: [
        { name: '北京', value: 120 },
        { name: '上海', value: 200 },
        { name: '广东', value: 300 },
        { name: '浙江', value: 150 },
        { name: '江苏', value: 180 },
      ], // 示例数据，可根据实际需求调整
    });
  } catch (error: any) {
    res.status(500).json({ message: '获取数据失败', error: error.message });
  } finally {
    await client.close();
  }
});

export default router;